home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / util / Mac F2C 1.3.sit / Mac F2C 1.3 / Mac F2C Libraries / libF77 Sources / f2c.h < prev    next >
Text File  |  1995-09-14  |  11KB  |  419 lines

  1. /* f2c.h  --  Standard Fortran to C header file */
  2.  
  3. /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  4.  
  5.     - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  6.  
  7.  
  8. #ifndef F2C_INCLUDE
  9. #define F2C_INCLUDE
  10.  
  11. #ifdef __MWERKS__
  12.  
  13. #ifdef __cplusplus                        /* Need to force ANSI C library access */            
  14. #define CPLUSPLUS_SET __cplusplus        /* Otherwise math.h and Mac F2C code have clashing math function protos */
  15. #undef __cplusplus
  16. #endif    /* C++ */
  17.  
  18. #include <math.h>                        /* Need to include this for MWERKS */
  19.  
  20. #ifdef CPLUSPLUS_SET
  21. #define __cplusplus CPLUSPLUS_SET
  22. #undef CPLUSPLUS_SET
  23. #endif /* Restore C++ */
  24.  
  25. #endif    /* MWERKS */
  26.  
  27.  
  28. /* IMT 9Sep95  Prototypes for functions that add multitasking to CW, SPM, TPM */
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32. void DoMultiTask( long sleepTime );
  33. void NoIO_Start( void );                /* TPM or SPM *only* */
  34. void NoIO_End( void );                    /* TPM or SPM *only* */
  35. #ifdef __cplusplus
  36. }
  37. #endif
  38.  
  39.  
  40.  
  41. typedef long int integer;
  42. typedef char *address;
  43. typedef short int shortint;
  44. typedef float real;
  45. typedef double doublereal;
  46. typedef struct { real r, i; } complex;
  47. typedef struct { doublereal r, i; } doublecomplex;
  48. typedef long int logical;
  49. typedef short int shortlogical;
  50. typedef char logical1;
  51. typedef char integer1;
  52. /* typedef long long longint; */ /* system-dependent */
  53.  
  54. #define TRUE_ (1)
  55. #define FALSE_ (0)
  56.  
  57. /* Extern is for use with -E */
  58. #ifndef Extern
  59. #define Extern extern
  60. #endif
  61.  
  62. /* I/O stuff */
  63.  
  64. #ifdef f2c_i2
  65. /* for -i2 */
  66. typedef short flag;
  67. typedef short ftnlen;
  68. typedef short ftnint;
  69. #else
  70. typedef long int flag;
  71. typedef long int ftnlen;
  72. typedef long int ftnint;
  73. #endif
  74.  
  75. /*external read, write*/
  76. typedef struct
  77. {    flag cierr;
  78.     ftnint ciunit;
  79.     flag ciend;
  80.     char *cifmt;
  81.     ftnint cirec;
  82. } cilist;
  83.  
  84. /*internal read, write*/
  85. typedef struct
  86. {    flag icierr;
  87.     char *iciunit;
  88.     flag iciend;
  89.     char *icifmt;
  90.     ftnint icirlen;
  91.     ftnint icirnum;
  92. } icilist;
  93.  
  94. /*open*/
  95. typedef struct
  96. {    flag oerr;
  97.     ftnint ounit;
  98.     char *ofnm;
  99.     ftnlen ofnmlen;
  100.     char *osta;
  101.     char *oacc;
  102.     char *ofm;
  103.     ftnint orl;
  104.     char *oblnk;
  105. } olist;
  106.  
  107. /*close*/
  108. typedef struct
  109. {    flag cerr;
  110.     ftnint cunit;
  111.     char *csta;
  112. } cllist;
  113.  
  114. /*rewind, backspace, endfile*/
  115. typedef struct
  116. {    flag aerr;
  117.     ftnint aunit;
  118. } alist;
  119.  
  120. /* inquire */
  121. typedef struct
  122. {    flag inerr;
  123.     ftnint inunit;
  124.     char *infile;
  125.     ftnlen infilen;
  126.     ftnint    *inex;    /*parameters in standard's order*/
  127.     ftnint    *inopen;
  128.     ftnint    *innum;
  129.     ftnint    *innamed;
  130.     char    *inname;
  131.     ftnlen    innamlen;
  132.     char    *inacc;
  133.     ftnlen    inacclen;
  134.     char    *inseq;
  135.     ftnlen    inseqlen;
  136.     char     *indir;
  137.     ftnlen    indirlen;
  138.     char    *infmt;
  139.     ftnlen    infmtlen;
  140.     char    *inform;
  141.     ftnint    informlen;
  142.     char    *inunf;
  143.     ftnlen    inunflen;
  144.     ftnint    *inrecl;
  145.     ftnint    *innrec;
  146.     char    *inblank;
  147.     ftnlen    inblanklen;
  148. } inlist;
  149.  
  150. #define VOID void
  151.  
  152. union Multitype {    /* for multiple entry points */
  153.     integer1 g;
  154.     shortint h;
  155.     integer i;
  156.     /* longint j; */
  157.     real r;
  158.     doublereal d;
  159.     complex c;
  160.     doublecomplex z;
  161.     };
  162.  
  163. typedef union Multitype Multitype;
  164.  
  165. /*typedef long int Long;*/    /* No longer used; formerly in Namelist */
  166.  
  167. struct Vardesc {    /* for Namelist */
  168.     char *name;
  169.     char *addr;
  170.     ftnlen *dims;
  171.     int  type;
  172.     };
  173. typedef struct Vardesc Vardesc;
  174.  
  175. struct Namelist {
  176.     char *name;
  177.     Vardesc **vars;
  178.     int nvars;
  179.     };
  180. typedef struct Namelist Namelist;
  181.  
  182. #define abs(x) ((x) >= 0 ? (x) : -(x))
  183. #define dabs(x) (doublereal)abs(x)
  184. #define min(a,b) ((a) <= (b) ? (a) : (b))
  185. #define max(a,b) ((a) >= (b) ? (a) : (b))
  186. #define dmin(a,b) (doublereal)min(a,b)
  187. #define dmax(a,b) (doublereal)max(a,b)
  188.  
  189. /* procedure parameter types for -A and -C++ */
  190.  
  191. #define F2C_proc_par_types 1
  192. #ifdef __cplusplus
  193. typedef int /* Unknown procedure type */ (*U_fp)(...);
  194. typedef shortint (*J_fp)(...);
  195. typedef integer (*I_fp)(...);
  196. typedef real (*R_fp)(...);
  197. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  198. typedef /* Complex */ VOID (*C_fp)(...);
  199. typedef /* Double Complex */ VOID (*Z_fp)(...);
  200. typedef logical (*L_fp)(...);
  201. typedef shortlogical (*K_fp)(...);
  202. typedef /* Character */ VOID (*H_fp)(...);
  203. typedef /* Subroutine */ int (*S_fp)(...);
  204. #else
  205. typedef int /* Unknown procedure type */ (*U_fp)();
  206. typedef shortint (*J_fp)();
  207. typedef integer (*I_fp)();
  208. typedef real (*R_fp)();
  209. typedef doublereal (*D_fp)(), (*E_fp)();
  210. typedef /* Complex */ VOID (*C_fp)();
  211. typedef /* Double Complex */ VOID (*Z_fp)();
  212. typedef logical (*L_fp)();
  213. typedef shortlogical (*K_fp)();
  214. typedef /* Character */ VOID (*H_fp)();
  215. typedef /* Subroutine */ int (*S_fp)();
  216. #endif
  217. /* E_fp is for real functions when -R is not specified */
  218. typedef VOID C_f;    /* complex function */
  219. typedef VOID H_f;    /* character function */
  220. typedef VOID Z_f;    /* double complex function */
  221. typedef doublereal E_f;    /* real function with -R not specified */
  222.  
  223. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  224.  
  225. #ifndef Skip_f2c_Undefs
  226. #undef cray
  227. #undef gcos
  228. #undef mc68010
  229. #undef mc68020
  230. #undef mips
  231. #undef pdp11
  232. #undef sgi
  233. #undef sparc
  234. #undef sun
  235. #undef sun2
  236. #undef sun3
  237. #undef sun4
  238. #undef u370
  239. #undef u3b
  240. #undef u3b2
  241. #undef u3b5
  242. #undef unix
  243. #undef vax
  244. #endif
  245.  
  246. /* Added by IMT 30 Nov 94:  Include Prototypes for ANSI C and C++ */
  247.  
  248. #if defined(__cplusplus) || !defined(KR_headers)  
  249.  
  250. #ifdef __cplusplus
  251. extern "C" {
  252. #endif
  253.  
  254. extern int abort_(void);
  255. extern double c_abs(complex *);
  256. extern void c_cos(complex *, complex *);
  257. extern void c_div(complex *, complex *, complex *);
  258. extern void c_exp(complex *, complex *);
  259. extern void c_log(complex *, complex *);
  260. extern void c_sin(complex *, complex *);
  261. extern void c_sqrt(complex *, complex *);
  262. extern double d_abs(double *);
  263. extern double d_acos(double *);
  264. extern double d_asin(double *);
  265. extern double d_atan(double *);
  266. extern double d_atn2(double *, double *);
  267. extern void d_cnjg(doublecomplex *, doublecomplex *);
  268. extern double d_cos(double *);
  269. extern double d_cosh(double *);
  270. extern double d_dim(double *, double *);
  271. extern double d_exp(double *);
  272. extern double d_imag(doublecomplex *);
  273. extern double d_int(double *);
  274. extern double d_lg10(double *);
  275. extern double d_log(double *);
  276. extern double d_mod(double *, double *);
  277. extern double d_nint(double *);
  278. extern double d_prod(float *, float *);
  279. extern double d_sign(double *, double *);
  280. extern double d_sin(double *);
  281. extern double d_sinh(double *);
  282. extern double d_sqrt(double *);
  283. extern double d_tan(double *);
  284. extern double d_tanh(double *);
  285. extern double derf_(double *);
  286. extern double derfc_(double *);
  287. extern integer do_fio(ftnint *, char *, ftnlen);
  288. extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
  289. extern integer do_uio(ftnint *, char *, ftnlen);
  290. extern integer e_rdfe(void);
  291. extern integer e_rdue(void);
  292. extern integer e_rsfe(void);
  293. extern integer e_rsfi(void);
  294. extern integer e_rsle(void);
  295. extern integer e_rsli(void);
  296. extern integer e_rsue(void);
  297. extern integer e_wdfe(void);
  298. extern integer e_wdue(void);
  299. extern integer e_wsfe(void);
  300. extern integer e_wsfi(void);
  301. extern integer e_wsle(void);
  302. extern integer e_wsli(void);
  303. extern integer e_wsue(void);
  304. extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  305. extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  306. extern double erf(double);
  307. extern double erf_(float *);
  308. extern double erfc(double);
  309. extern double erfc_(float *);
  310. extern integer f_back(alist *);
  311. extern integer f_clos(cllist *);
  312. extern integer f_end(alist *);
  313. extern void f_exit(void);
  314. extern integer f_inqu(inlist *);
  315. extern integer f_open(olist *);
  316. extern integer f_rew(alist *);
  317. extern int flush_(void);
  318. extern void getarg_(integer *, char *, ftnlen);
  319. extern void getenv_(char *, char *, ftnlen, ftnlen);
  320. extern short h_abs(short *);
  321. extern short h_dim(short *, short *);
  322. extern short h_dnnt(double *);
  323. extern short h_indx(char *, char *, ftnlen, ftnlen);
  324. extern short h_len(char *, ftnlen);
  325. extern short h_mod(short *, short *);
  326. extern short h_nint(float *);
  327. extern short h_sign(short *, short *);
  328. extern short hl_ge(char *, char *, ftnlen, ftnlen);
  329. extern short hl_gt(char *, char *, ftnlen, ftnlen);
  330. extern short hl_le(char *, char *, ftnlen, ftnlen);
  331. extern short hl_lt(char *, char *, ftnlen, ftnlen);
  332. extern integer i_abs(integer *);
  333. extern integer i_dim(integer *, integer *);
  334. extern integer i_dnnt(double *);
  335. extern integer i_indx(char *, char *, ftnlen, ftnlen);
  336. extern integer i_len(char *, ftnlen);
  337. extern integer i_mod(integer *, integer *);
  338. extern integer i_nint(float *);
  339. extern integer i_sign(integer *, integer *);
  340. extern integer iargc_(void);
  341. extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
  342. extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
  343. extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
  344. extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
  345. extern void pow_ci(complex *, complex *, integer *);
  346. extern double pow_dd(double *, double *);
  347. extern double pow_di(double *, integer *);
  348. extern short pow_hh(short *, shortint *);
  349. extern integer pow_ii(integer *, integer *);
  350. extern double pow_ri(float *, integer *);
  351. extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
  352. extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
  353. extern double r_abs(float *);
  354. extern double r_acos(float *);
  355. extern double r_asin(float *);
  356. extern double r_atan(float *);
  357. extern double r_atn2(float *, float *);
  358. extern void r_cnjg(complex *, complex *);
  359. extern double r_cos(float *);
  360. extern double r_cosh(float *);
  361. extern double r_dim(float *, float *);
  362. extern double r_exp(float *);
  363. extern double r_imag(complex *);
  364. extern double r_int(float *);
  365. extern double r_lg10(float *);
  366. extern double r_log(float *);
  367. extern double r_mod(float *, float *);
  368. extern double r_nint(float *);
  369. extern double r_sign(float *, float *);
  370. extern double r_sin(float *);
  371. extern double r_sinh(float *);
  372. extern double r_sqrt(float *);
  373. extern double r_tan(float *);
  374. extern double r_tanh(float *);
  375. extern void s_cat(char *, char **, integer *, integer *, ftnlen);
  376. extern integer s_cmp(char *, char *, ftnlen, ftnlen);
  377. extern void s_copy(char *, char *, ftnlen, ftnlen);
  378. extern int s_paus(char *, ftnlen);
  379. extern integer s_rdfe(cilist *);
  380. extern integer s_rdue(cilist *);
  381. extern integer s_rnge(char *, integer, char *, integer);
  382. extern integer s_rsfe(cilist *);
  383. extern integer s_rsfi(icilist *);
  384. extern integer s_rsle(cilist *);
  385. extern integer s_rsli(icilist *);
  386. extern integer s_rsne(cilist *);
  387. extern integer s_rsni(icilist *);
  388. extern integer s_rsue(cilist *);
  389. extern int s_stop(char *, ftnlen);
  390. extern integer s_wdfe(cilist *);
  391. extern integer s_wdue(cilist *);
  392. extern integer s_wsfe(cilist *);
  393. extern integer s_wsfi(icilist *);
  394. extern integer s_wsle(cilist *);
  395. extern integer s_wsli(icilist *);
  396. extern integer s_wsne(cilist *);
  397. extern integer s_wsni(icilist *);
  398. extern integer s_wsue(cilist *);
  399. extern void sig_die(char *, int);
  400. extern integer signal_(integer *, void (*)(int));
  401. extern int system_(char *, ftnlen);
  402. extern double z_abs(doublecomplex *);
  403. extern void z_cos(doublecomplex *, doublecomplex *);
  404. extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
  405. extern void z_exp(doublecomplex *, doublecomplex *);
  406. extern void z_log(doublecomplex *, doublecomplex *);
  407. extern void z_sin(doublecomplex *, doublecomplex *);
  408. extern void z_sqrt(doublecomplex *, doublecomplex *);
  409.  
  410. #ifdef __cplusplus
  411. }
  412. #endif
  413.  
  414. #endif  /* prototypes for ANSI C and C++ */
  415.  
  416. #endif            /* F2C_INCLUDE */
  417.  
  418.  
  419.